// vite.config.ts
import path from "path";
import legacy from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/@vitejs+plugin-legacy@4.1.1_549709ceebd37badda3107896690f1eb/node_modules/@vitejs/plugin-legacy/dist/index.mjs";
import react from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/@vitejs+plugin-react@4.5.0__69d575de18d6ebe57bf722544a145f1b/node_modules/@vitejs/plugin-react/dist/index.mjs";
import { visualizer } from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/rollup-plugin-visualizer@5.14.0_rollup@2.79.2/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import { defineConfig, loadEnv } from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/vite@4.5.14_@types+node@22._2f7e286ebf473f8117c2b225e160c391/node_modules/vite/dist/node/index.js";
import { nodePolyfills } from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/vite-plugin-node-polyfills@_e0b27eb2a0474efef9883169e47c2fd3/node_modules/vite-plugin-node-polyfills/dist/index.js";
import { VitePWA } from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/vite-plugin-pwa@0.21.2_vite_aba2b35ba6f3b9fa64339a7b02a26610/node_modules/vite-plugin-pwa/dist/index.js";
import { createSvgIconsPlugin } from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_57570589eea7fa2c6ea6d1e39d8476b2/node_modules/vite-plugin-svg-icons/dist/index.mjs";
import tsconfigPaths from "file:///D:/Project/duzhi_dev-v2.2/ruigpt-web/node_modules/.pnpm/vite-tsconfig-paths@4.3.2_t_663757cac47a0c2505d9b8eceecf41ae/node_modules/vite-tsconfig-paths/dist/index.mjs";
var __vite_injected_original_dirname = "D:\\Project\\duzhi_dev-v2.2\\ruigpt-web";
var env = loadEnv("development", "./");
var vite_config_default = defineConfig({
  base: "./",
  esbuild: {
    // drop: ['console', 'debugger'],
  },
  css: {
    // 开css sourcemap方便找css
    devSourcemap: true
  },
  plugins: [
    react(),
    legacy({
      targets: ["defaults", "not IE 11"]
    }),
    // 同步tsconfig.json的path设置alias
    visualizer({
      // 可选配置项
      // open: true, // 是否自动打开生成的报告页面
      gzipSize: true,
      // 显示gzip后的大小
      brotliSize: true
      // 显示brotli压缩后的大小
      // 更多配置选项...
    }),
    tsconfigPaths(),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), "src/assets/icons")],
      // 指定symbolId格式
      symbolId: "icon-[dir]-[name]",
      svgoOptions: true
    }),
    nodePolyfills(),
    VitePWA({
      registerType: "autoUpdate",
      // 自动注册和更新
      manifest: {
        name: "EAI",
        short_name: "EAI",
        theme_color: "#eceff7",
        background_color: "#eceff7"
      },
      workbox: {
        maximumFileSizeToCacheInBytes: 50 * 1024 * 1024,
        globPatterns: ["**/*.{js,css,ico,png,svg}"],
        skipWaiting: true,
        // 跳过等待阶段
        clientsClaim: true
        // 立即接管控制
      },
      devOptions: {
        enabled: false
        // 开发环境也启用
      }
    })
  ],
  resolve: {
    alias: {
      crypto: "node-libs-browser/mock/crypto",
      eaid: path.resolve(__vite_injected_original_dirname, "src/components/eai-design")
    }
  },
  server: {
    // 自动打开浏览器
    open: true,
    host: true,
    port: 3001,
    proxy: {
      "/api/ts/v1": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2.replace("/api/ts/v1", "/api/ts/v1");
        }
      },
      "/api/metahuman": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2.replace("/api/metahuman", "/api/metahuman");
        }
      },
      "/imgs": {
        target: env.VITE_GATEWAY_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2.replace("/imgs", "/api/imgs");
        }
      },
      "/image": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/video": {
        target: env.VITE_VIDEOS_PREVEIS_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/openapi": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/api/webcrawl/openapi/v1": {
        target: env.VITE_WEBCRAWL_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/api/api_know": {
        target: env.VITE_CONNECTOR_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2.replace("/api/api_know", "");
        }
      },
      "/api/fcs/openapi/v1": {
        target: env.VITE_FCS_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/api/agent/api": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/api/openapi/proxy": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/api/openapi": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        // configure: (proxy, _options) => {
        //   proxy.on('proxyReq', (proxyReq, req, _res) => {
        //     if (req.url?.includes('proxy')) {
        //       const path = req.url.replace('/openapi/proxy/', '');
        //       _options.target = 'http://' + path;
        //     } else {
        //       _options.target = env.VITE_BACKEND_URL;
        //     }
        //   });
        // },
        rewrite: (path2) => {
          return path2.replace(/^\/api\/openapi/, "/openapi");
        }
      },
      "/api/api/ruigpt": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          if (path2.includes("/api/api")) {
            return path2.replace("/api/api", "/api");
          }
          if (path2.includes("/api/openapi/proxy")) {
            return path2.replace("/api/openapi/proxy", "/");
          }
          if (path2.includes("/api/openapi/")) {
            return path2.replace("/api/openapi/", "/openapi");
          }
          return path2;
        }
      },
      "/api/ruigpt": {
        target: env.VITE_BACKEND_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          if (path2.includes("/api/api")) {
            return path2.replace("/api/api", "/api");
          }
          if (path2.includes("/api/openapi/proxy")) {
            return path2.replace("/api/openapi/proxy", "/");
          }
          if (path2.includes("/api/openapi/")) {
            return path2.replace("/api/openapi/", "/openapi");
          }
          return path2;
        }
      },
      "/api": {
        target: env.VITE_GPT_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          if (path2.includes("/api/api")) {
            return path2.replace("/api/api", "/api");
          }
          if (path2.includes("/api/openapi/proxy")) {
            return path2.replace("/api/openapi/proxy", "/");
          }
          if (path2.includes("/api/openapi/")) {
            return path2.replace("/api/openapi/", "/openapi");
          }
          return path2;
        }
      },
      "/preview": {
        target: env.VITE_ONLINEPREVIEW_URL,
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      },
      "/ws": {
        // 自定义一个路径，用于匹配 WebSocket 请求
        target: env.VITE_WEBSOCKET,
        ws: true,
        // 开启 WebSocket 代理
        changeOrigin: true,
        secure: false,
        rewrite: (path2) => path2.replace(/^\/ws/, "")
        // 可根据需要重写路径
      },
      // '/download': {
      //   target: 'http://10.110.163.177:12233/',
      //   changeOrigin: true,
      //   rewrite: (path) => {
      //     return path;
      //   },
      // },
      "/offer": {
        target: "http://172.30.232.141:30031/",
        // target: 'http://10.110.163.199:30031/',
        changeOrigin: true,
        rewrite: (path2) => {
          return path2;
        }
      }
      // '/human': {
      //   target: 'http://172.30.232.141:30031/',
      //   // target: 'http://10.110.163.199:30031/',
      //   changeOrigin: true,
      //   rewrite: (path) => {
      //     return path;
      //   },
      // },
    }
  },
  assetsInclude: ["**/*.worker.min.js"],
  build: {
    target: "es2015",
    minify: "terser",
    chunkSizeWarningLimit: 1e3,
    rollupOptions: {
      output: {
        manualChunks: {
          // lodash: ['lodash'],
          // echarts: ['echarts'],
          react: ["react", "react-dom"],
          antd: ["antd", "@ant-design/icons"],
          echarts: ["echarts", "echarts-wordcloud", "echarts-for-react"],
          editor: ["lexical", "react-quill", "@monaco-editor/react"],
          i18n: ["i18next", "react-i18next"],
          socket: ["socket.io-client"],
          pdfjs: ["pdfjs-dist"]
        }
      }
    },
    terserOptions: {
      compress: {
        // 生产环境移除console
        drop_console: true,
        drop_debugger: true
      }
    }
  }
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxQcm9qZWN0XFxcXGR1emhpX2Rldi12Mi4yXFxcXHJ1aWdwdC13ZWJcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXFByb2plY3RcXFxcZHV6aGlfZGV2LXYyLjJcXFxccnVpZ3B0LXdlYlxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovUHJvamVjdC9kdXpoaV9kZXYtdjIuMi9ydWlncHQtd2ViL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQgbGVnYWN5IGZyb20gJ0B2aXRlanMvcGx1Z2luLWxlZ2FjeSc7XHJcbmltcG9ydCByZWFjdCBmcm9tICdAdml0ZWpzL3BsdWdpbi1yZWFjdCc7XHJcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYgfSBmcm9tICd2aXRlJztcclxuaW1wb3J0IHsgbm9kZVBvbHlmaWxscyB9IGZyb20gJ3ZpdGUtcGx1Z2luLW5vZGUtcG9seWZpbGxzJztcclxuaW1wb3J0IHsgVml0ZVBXQSB9IGZyb20gJ3ZpdGUtcGx1Z2luLXB3YSc7XHJcbmltcG9ydCB7IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIH0gZnJvbSAndml0ZS1wbHVnaW4tc3ZnLWljb25zJztcclxuaW1wb3J0IHRzY29uZmlnUGF0aHMgZnJvbSAndml0ZS10c2NvbmZpZy1wYXRocyc7XHJcblxyXG5jb25zdCBlbnYgPSBsb2FkRW52KCdkZXZlbG9wbWVudCcsICcuLycpO1xyXG4vLyBjb25zb2xlLmxvZyhwcm9jZXNzLmVudi5OT0RFX0VOViwgZW52KTtcclxuXHJcbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XHJcbiAgYmFzZTogJy4vJyxcclxuICBlc2J1aWxkOiB7XHJcbiAgICAvLyBkcm9wOiBbJ2NvbnNvbGUnLCAnZGVidWdnZXInXSxcclxuICB9LFxyXG4gIGNzczoge1xyXG4gICAgLy8gXHU1RjAwY3NzIHNvdXJjZW1hcFx1NjVCOVx1NEZCRlx1NjI3RWNzc1xyXG4gICAgZGV2U291cmNlbWFwOiB0cnVlLFxyXG4gIH0sXHJcbiAgcGx1Z2luczogW1xyXG4gICAgcmVhY3QoKSxcclxuICAgIGxlZ2FjeSh7XHJcbiAgICAgIHRhcmdldHM6IFsnZGVmYXVsdHMnLCAnbm90IElFIDExJ10sXHJcbiAgICB9KSxcclxuICAgIC8vIFx1NTQwQ1x1NkI2NXRzY29uZmlnLmpzb25cdTc2ODRwYXRoXHU4QkJFXHU3RjZFYWxpYXNcclxuICAgIHZpc3VhbGl6ZXIoe1xyXG4gICAgICAvLyBcdTUzRUZcdTkwMDlcdTkxNERcdTdGNkVcdTk4NzlcclxuICAgICAgLy8gb3BlbjogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU4MUVBXHU1MkE4XHU2MjUzXHU1RjAwXHU3NTFGXHU2MjEwXHU3Njg0XHU2MkE1XHU1NDRBXHU5ODc1XHU5NzYyXHJcbiAgICAgIGd6aXBTaXplOiB0cnVlLCAvLyBcdTY2M0VcdTc5M0FnemlwXHU1NDBFXHU3Njg0XHU1OTI3XHU1QzBGXHJcbiAgICAgIGJyb3RsaVNpemU6IHRydWUsIC8vIFx1NjYzRVx1NzkzQWJyb3RsaVx1NTM4Qlx1N0YyOVx1NTQwRVx1NzY4NFx1NTkyN1x1NUMwRlxyXG4gICAgICAvLyBcdTY2RjRcdTU5MUFcdTkxNERcdTdGNkVcdTkwMDlcdTk4NzkuLi5cclxuICAgIH0pLFxyXG4gICAgdHNjb25maWdQYXRocygpLFxyXG4gICAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xyXG4gICAgICAvLyBcdTYzMDdcdTVCOUFcdTk3MDBcdTg5ODFcdTdGMTNcdTVCNThcdTc2ODRcdTU2RkVcdTY4MDdcdTY1ODdcdTRFRjZcdTU5MzlcclxuICAgICAgaWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3NyYy9hc3NldHMvaWNvbnMnKV0sXHJcbiAgICAgIC8vIFx1NjMwN1x1NUI5QXN5bWJvbElkXHU2ODNDXHU1RjBGXHJcbiAgICAgIHN5bWJvbElkOiAnaWNvbi1bZGlyXS1bbmFtZV0nLFxyXG4gICAgICBzdmdvT3B0aW9uczogdHJ1ZSxcclxuICAgIH0pLFxyXG4gICAgbm9kZVBvbHlmaWxscygpLFxyXG4gICAgVml0ZVBXQSh7XHJcbiAgICAgIHJlZ2lzdGVyVHlwZTogJ2F1dG9VcGRhdGUnLCAvLyBcdTgxRUFcdTUyQThcdTZDRThcdTUxOENcdTU0OENcdTY2RjRcdTY1QjBcclxuICAgICAgbWFuaWZlc3Q6IHtcclxuICAgICAgICBuYW1lOiAnRUFJJyxcclxuICAgICAgICBzaG9ydF9uYW1lOiAnRUFJJyxcclxuICAgICAgICB0aGVtZV9jb2xvcjogJyNlY2VmZjcnLFxyXG4gICAgICAgIGJhY2tncm91bmRfY29sb3I6ICcjZWNlZmY3JyxcclxuICAgICAgfSxcclxuICAgICAgd29ya2JveDoge1xyXG4gICAgICAgIG1heGltdW1GaWxlU2l6ZVRvQ2FjaGVJbkJ5dGVzOiA1MCAqIDEwMjQgKiAxMDI0LFxyXG4gICAgICAgIGdsb2JQYXR0ZXJuczogWycqKi8qLntqcyxjc3MsaWNvLHBuZyxzdmd9J10sXHJcbiAgICAgICAgc2tpcFdhaXRpbmc6IHRydWUsIC8vIFx1OERGM1x1OEZDN1x1N0I0OVx1NUY4NVx1OTYzNlx1NkJCNVxyXG4gICAgICAgIGNsaWVudHNDbGFpbTogdHJ1ZSwgLy8gXHU3QUNCXHU1MzczXHU2M0E1XHU3QkExXHU2M0E3XHU1MjM2XHJcbiAgICAgIH0sXHJcbiAgICAgIGRldk9wdGlvbnM6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZSwgLy8gXHU1RjAwXHU1M0QxXHU3M0FGXHU1ODgzXHU0RTVGXHU1NDJGXHU3NTI4XHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICBdLFxyXG4gIHJlc29sdmU6IHtcclxuICAgIGFsaWFzOiB7XHJcbiAgICAgIGNyeXB0bzogJ25vZGUtbGlicy1icm93c2VyL21vY2svY3J5cHRvJyxcclxuICAgICAgZWFpZDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3NyYy9jb21wb25lbnRzL2VhaS1kZXNpZ24nKSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBzZXJ2ZXI6IHtcclxuICAgIC8vIFx1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFx1NkQ0Rlx1ODlDOFx1NTY2OFxyXG4gICAgb3BlbjogdHJ1ZSxcclxuICAgIGhvc3Q6IHRydWUsXHJcbiAgICBwb3J0OiAzMDAxLFxyXG4gICAgcHJveHk6IHtcclxuICAgICAgJy9hcGkvdHMvdjEnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9CQUNLRU5EX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoJy9hcGkvdHMvdjEnLCAnL2FwaS90cy92MScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvYXBpL21ldGFodW1hbic6IHtcclxuICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0JBQ0tFTkRfVVJMLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9tZXRhaHVtYW4nLCAnL2FwaS9tZXRhaHVtYW4nKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnL2ltZ3MnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9HQVRFV0FZX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoJy9pbWdzJywgJy9hcGkvaW1ncycpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvaW1hZ2UnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9CQUNLRU5EX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvdmlkZW8nOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9WSURFT1NfUFJFVkVJU19VUkwsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnL29wZW5hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9CQUNLRU5EX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvYXBpL3dlYmNyYXdsL29wZW5hcGkvdjEnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9XRUJDUkFXTF9VUkwsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnL2FwaS9hcGlfa25vdyc6IHtcclxuICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0NPTk5FQ1RPUl9VUkwsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKCcvYXBpL2FwaV9rbm93JywgJycpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvYXBpL2Zjcy9vcGVuYXBpL3YxJzoge1xyXG4gICAgICAgIHRhcmdldDogZW52LlZJVEVfRkNTX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgICAgIC8vIHJldHVybiBwYXRoLnJlcGxhY2UoJy9hcGkvZmNzJywgJy9mY3MnKTtcclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvYXBpL2FnZW50L2FwaSc6IHtcclxuICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0JBQ0tFTkRfVVJMLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJy9hcGkvb3BlbmFwaS9wcm94eSc6IHtcclxuICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0JBQ0tFTkRfVVJMLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwYXRoLnJlcGxhY2UoL15cXC9hcGlcXC9vcGVuYXBpXFwvcHJveHlcXC8/LiovLCAnJyksIHBhdGgpO1xyXG4gICAgICAgICAgLy8gY29uc3QgcmVzdWx0ID0gcGF0aC5tYXRjaCgvXFwvW15cXC9dKyQvKSA/PyAnL29mZmVyJztcclxuICAgICAgICAgIC8vIHJldHVybiBwYXRoLnJlcGxhY2UoL15cXC9hcGlcXC9vcGVuYXBpXFwvcHJveHlcXC8/LiovLCByZXN1bHRbMF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvYXBpL29wZW5hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9CQUNLRU5EX1VSTCxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgLy8gY29uZmlndXJlOiAocHJveHksIF9vcHRpb25zKSA9PiB7XHJcbiAgICAgICAgLy8gICBwcm94eS5vbigncHJveHlSZXEnLCAocHJveHlSZXEsIHJlcSwgX3JlcykgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAocmVxLnVybD8uaW5jbHVkZXMoJ3Byb3h5JykpIHtcclxuICAgICAgICAvLyAgICAgICBjb25zdCBwYXRoID0gcmVxLnVybC5yZXBsYWNlKCcvb3BlbmFwaS9wcm94eS8nLCAnJyk7XHJcbiAgICAgICAgLy8gICAgICAgX29wdGlvbnMudGFyZ2V0ID0gJ2h0dHA6Ly8nICsgcGF0aDtcclxuICAgICAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICBfb3B0aW9ucy50YXJnZXQgPSBlbnYuVklURV9CQUNLRU5EX1VSTDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXlxcL2FwaVxcL29wZW5hcGkvLCAnL29wZW5hcGknKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnL2FwaS9hcGkvcnVpZ3B0Jzoge1xyXG4gICAgICAgIHRhcmdldDogZW52LlZJVEVfQkFDS0VORF9VUkwsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnL2FwaS9hcGknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKCcvYXBpL2FwaScsICcvYXBpJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnL2FwaS9vcGVuYXBpL3Byb3h5JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9vcGVuYXBpL3Byb3h5JywgJy8nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCcvYXBpL29wZW5hcGkvJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9vcGVuYXBpLycsICcvb3BlbmFwaScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJy9hcGkvcnVpZ3B0Jzoge1xyXG4gICAgICAgIHRhcmdldDogZW52LlZJVEVfQkFDS0VORF9VUkwsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnL2FwaS9hcGknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKCcvYXBpL2FwaScsICcvYXBpJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnL2FwaS9vcGVuYXBpL3Byb3h5JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9vcGVuYXBpL3Byb3h5JywgJy8nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCcvYXBpL29wZW5hcGkvJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9vcGVuYXBpLycsICcvb3BlbmFwaScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJy9hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9HUFRfVVJMLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJy9hcGkvYXBpJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgnL2FwaS9hcGknLCAnL2FwaScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJy9hcGkvb3BlbmFwaS9wcm94eScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoJy9hcGkvb3BlbmFwaS9wcm94eScsICcvJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnL2FwaS9vcGVuYXBpLycpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoJy9hcGkvb3BlbmFwaS8nLCAnL29wZW5hcGknKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgICcvcHJldmlldyc6IHtcclxuICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX09OTElORVBSRVZJRVdfVVJMLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJy93cyc6IHtcclxuICAgICAgICAvLyBcdTgxRUFcdTVCOUFcdTRFNDlcdTRFMDBcdTRFMkFcdThERUZcdTVGODRcdUZGMENcdTc1MjhcdTRFOEVcdTUzMzlcdTkxNEQgV2ViU29ja2V0IFx1OEJGN1x1NkM0MlxyXG4gICAgICAgIHRhcmdldDogZW52LlZJVEVfV0VCU09DS0VULFxyXG4gICAgICAgIHdzOiB0cnVlLCAvLyBcdTVGMDBcdTU0MkYgV2ViU29ja2V0IFx1NEVFM1x1NzQwNlxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICBzZWN1cmU6IGZhbHNlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC93cy8sICcnKSwgLy8gXHU1M0VGXHU2ODM5XHU2MzZFXHU5NzAwXHU4OTgxXHU5MUNEXHU1MTk5XHU4REVGXHU1Rjg0XHJcbiAgICAgIH0sXHJcbiAgICAgIC8vICcvZG93bmxvYWQnOiB7XHJcbiAgICAgIC8vICAgdGFyZ2V0OiAnaHR0cDovLzEwLjExMC4xNjMuMTc3OjEyMjMzLycsXHJcbiAgICAgIC8vICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAvLyAgIHJld3JpdGU6IChwYXRoKSA9PiB7XHJcbiAgICAgIC8vICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgLy8gICB9LFxyXG4gICAgICAvLyB9LFxyXG4gICAgICAnL29mZmVyJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xNzIuMzAuMjMyLjE0MTozMDAzMS8nLFxyXG4gICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly8xMC4xMTAuMTYzLjE5OTozMDAzMS8nLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgLy8gJy9odW1hbic6IHtcclxuICAgICAgLy8gICB0YXJnZXQ6ICdodHRwOi8vMTcyLjMwLjIzMi4xNDE6MzAwMzEvJyxcclxuICAgICAgLy8gICAvLyB0YXJnZXQ6ICdodHRwOi8vMTAuMTEwLjE2My4xOTk6MzAwMzEvJyxcclxuICAgICAgLy8gICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgIC8vICAgcmV3cml0ZTogKHBhdGgpID0+IHtcclxuICAgICAgLy8gICAgIHJldHVybiBwYXRoO1xyXG4gICAgICAvLyAgIH0sXHJcbiAgICAgIC8vIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgYXNzZXRzSW5jbHVkZTogWycqKi8qLndvcmtlci5taW4uanMnXSxcclxuICBidWlsZDoge1xyXG4gICAgdGFyZ2V0OiAnZXMyMDE1JyxcclxuICAgIG1pbmlmeTogJ3RlcnNlcicsXHJcbiAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDEwMDAsXHJcbiAgICByb2xsdXBPcHRpb25zOiB7XHJcbiAgICAgIG91dHB1dDoge1xyXG4gICAgICAgIG1hbnVhbENodW5rczoge1xyXG4gICAgICAgICAgLy8gbG9kYXNoOiBbJ2xvZGFzaCddLFxyXG4gICAgICAgICAgLy8gZWNoYXJ0czogWydlY2hhcnRzJ10sXHJcbiAgICAgICAgICByZWFjdDogWydyZWFjdCcsICdyZWFjdC1kb20nXSxcclxuICAgICAgICAgIGFudGQ6IFsnYW50ZCcsICdAYW50LWRlc2lnbi9pY29ucyddLFxyXG4gICAgICAgICAgZWNoYXJ0czogWydlY2hhcnRzJywgJ2VjaGFydHMtd29yZGNsb3VkJywgJ2VjaGFydHMtZm9yLXJlYWN0J10sXHJcbiAgICAgICAgICBlZGl0b3I6IFsnbGV4aWNhbCcsICdyZWFjdC1xdWlsbCcsICdAbW9uYWNvLWVkaXRvci9yZWFjdCddLFxyXG4gICAgICAgICAgaTE4bjogWydpMThuZXh0JywgJ3JlYWN0LWkxOG5leHQnXSxcclxuICAgICAgICAgIHNvY2tldDogWydzb2NrZXQuaW8tY2xpZW50J10sXHJcbiAgICAgICAgICBwZGZqczogWydwZGZqcy1kaXN0J10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgIGNvbXByZXNzOiB7XHJcbiAgICAgICAgLy8gXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU3OUZCXHU5NjY0Y29uc29sZVxyXG4gICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcclxuICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9LFxyXG59KTtcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFzUyxPQUFPLFVBQVU7QUFFdlQsT0FBTyxZQUFZO0FBQ25CLE9BQU8sV0FBVztBQUNsQixTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGNBQWMsZUFBZTtBQUN0QyxTQUFTLHFCQUFxQjtBQUM5QixTQUFTLGVBQWU7QUFDeEIsU0FBUyw0QkFBNEI7QUFDckMsT0FBTyxtQkFBbUI7QUFUMUIsSUFBTSxtQ0FBbUM7QUFXekMsSUFBTSxNQUFNLFFBQVEsZUFBZSxJQUFJO0FBSXZDLElBQU8sc0JBQVEsYUFBYTtBQUFBLEVBQzFCLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQTtBQUFBLEVBRVQ7QUFBQSxFQUNBLEtBQUs7QUFBQTtBQUFBLElBRUgsY0FBYztBQUFBLEVBQ2hCO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxTQUFTLENBQUMsWUFBWSxXQUFXO0FBQUEsSUFDbkMsQ0FBQztBQUFBO0FBQUEsSUFFRCxXQUFXO0FBQUE7QUFBQTtBQUFBLE1BR1QsVUFBVTtBQUFBO0FBQUEsTUFDVixZQUFZO0FBQUE7QUFBQTtBQUFBLElBRWQsQ0FBQztBQUFBLElBQ0QsY0FBYztBQUFBLElBQ2QscUJBQXFCO0FBQUE7QUFBQSxNQUVuQixVQUFVLENBQUMsS0FBSyxRQUFRLFFBQVEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBQUE7QUFBQSxNQUUxRCxVQUFVO0FBQUEsTUFDVixhQUFhO0FBQUEsSUFDZixDQUFDO0FBQUEsSUFD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
